# 导入必要的模块
import os
import launch  # 用于构建启动描述
import launch_ros  # 用于启动ROS 2节点
# 用于获取ROS包的安装路径
from ament_index_python.packages import get_package_share_directory
# 用于加载其他Python格式的启动文件（当前代码未使用，保留作为潜在扩展）
from launch.launch_description_sources import PythonLaunchDescriptionSource


def generate_launch_description():
    """生成启动描述，定义需要启动的节点和配置"""
    
    # 获取autopatrol_robot功能包的安装路径
    autopatrol_robot_dir = get_package_share_directory(
        'autopatrol_robot')
    
    # 拼接配置文件的完整路径：
    # 功能包路径 + config目录 + patrol_config.yaml文件
    patrol_config_path = os.path.join(
        autopatrol_robot_dir, 'config', 'patrol_config.yaml')
    
    # 定义第一个节点：巡逻控制节点
    action_node_turtle_control = launch_ros.actions.Node(
        package='autopatrol_robot',  # 节点所属的功能包
        executable='patrol_node',    # 要运行的可执行文件名
        parameters=[patrol_config_path]  # 传递给节点的参数文件
    )
    
    # 定义第二个节点：语音播报节点
    action_node_patrol_client = launch_ros.actions.Node(
        package='autopatrol_robot',  # 节点所属的功能包
        executable='speaker',        # 要运行的可执行文件名
        # 此处未指定parameters，说明该节点可能使用默认配置
    )

    # 将所有节点组装成启动描述并返回
    return launch.LaunchDescription([
        action_node_turtle_control,  # 加入巡逻控制节点
        action_node_patrol_client,   # 加入语音播报节点
    ])
